gtktreeview: Fix invalidation coordinates
authorCarlos Garnacho <carlosg@gnome.org>
Wed, 24 May 2017 16:30:35 +0000 (18:30 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Thu, 25 May 2017 14:25:59 +0000 (16:25 +0200)
We must account for the widget allocation now that there is no view_window.

gtk/gtktreeview.c

index 25190103586178e2d88d2243949a71a3a350ba46..a8a500ff8119e9a562ecbbdd94d70051aedf4023 100644 (file)
@@ -4372,14 +4372,17 @@ static void
 gtk_tree_view_invalidate_bin_region (GtkTreeView    *tree_view,
                                      cairo_region_t *region)
 {
+  GtkAllocation allocation;
+
   cairo_region_intersect_rectangle (region,
                                     &(GdkRectangle) { 0, 0,
                                                       gdk_window_get_width (tree_view->priv->bin_window),
                                                       gdk_window_get_height (tree_view->priv->bin_window)});
 
+  gtk_widget_get_allocation (GTK_WIDGET (tree_view), &allocation);
   cairo_region_translate (region,
-                          - (gint) gtk_adjustment_get_value (tree_view->priv->hadjustment),
-                          gtk_tree_view_get_effective_header_height (tree_view));
+                          allocation.x - (gint) gtk_adjustment_get_value (tree_view->priv->hadjustment),
+                          allocation.y + gtk_tree_view_get_effective_header_height (tree_view));
 
   gtk_widget_queue_draw_region (GTK_WIDGET (tree_view), region);
 
@@ -10982,11 +10985,13 @@ gtk_tree_view_adjustment_changed (GtkAdjustment *adjustment,
 {
   if (gtk_widget_get_realized (GTK_WIDGET (tree_view)))
     {
+      GtkAllocation allocation;
       gint dy;
-       
+
+      gtk_widget_get_allocation (GTK_WIDGET (tree_view), &allocation);
       gdk_window_move (tree_view->priv->bin_window,
-                      - gtk_adjustment_get_value (tree_view->priv->hadjustment),
-                      gtk_tree_view_get_effective_header_height (tree_view));
+                      allocation.x - gtk_adjustment_get_value (tree_view->priv->hadjustment),
+                      allocation.y + gtk_tree_view_get_effective_header_height (tree_view));
       dy = tree_view->priv->dy - (int) gtk_adjustment_get_value (tree_view->priv->vadjustment);
       tree_view->priv->in_scroll = TRUE;
       gdk_window_scroll (tree_view->priv->bin_window, 0, dy);